#ifndef WRAPPERBUFFERDIFERIDO_H_
#define WRAPPERBUFFERDIFERIDO_H_

#include "WrapperComponente.h"

namespace Toolkit
{

class WrapperBufferDiferido: public WrapperComponente
{
public:
    WrapperBufferDiferido();
    virtual ~WrapperBufferDiferido();

    virtual void serializar(stringstream&, const TipoSerializacion &tSerializacion) const;
    virtual void hidratar(stringstream &stream, const Dato &dato, const TipoSerializacion &tSerializacion);

    long int getUnidadAnterior() const;
    void setUnidadAnterior(const signed long int &unidadAnterior);

    long int getUnidadSiguiente() const;
    void setUnidadSiguiente(const signed long int &unidadSiguiente);

    long int getDireccionUnidad() const;
    void setDireccionUnidad(const signed long int &direccionUnidad);

    bool getDirtyBit() const;
    void setDirtyBit(const bool &dirtyBit);

    virtual WrapperComponente *clonarSinComponente() const;


private:
    /* Direcciones a anterior y siguiente en la lista para el LRU */
    long int unidadAnterior;
    long int unidadSiguiente;

    long int direccionUnidad;

    /* true si la unidad aun no se actualizo en disco. */
    bool dirtyBit;

};

}

#endif /* WRAPPERBUFFERDIFERIDO_H_ */
